home *** CD-ROM | disk | FTP | other *** search
- REM Hierarchical Menu Demo
- REM ©MacTutor 1988
- REM By Dave Kelly
-
- WINDOW OFF
- COORDINATE WINDOW
- DEF MOUSE=-1
- everyevent=-1:REM ALL events mask
- False=0:True=NOT False
- DIM dragRect%(3)
-
- 'Find out monitor size just in case we need it
- CALL GETWMGRPORT(WMgrPort&)
- PortTop=PEEK WORD(WMgrPort&+8)
- PortLeft=PEEK WORD(WMgrPort&+10)
- PortBottom=PEEK WORD(WMgrPort&+12)
- PortRight=PEEK WORD(WMgrPort&+14)
- CALL SETRECT(dragRect%(0),PortLeft+10,PortTop+10,PortRight-10,PortBottom-10)
-
- REM Setup the EventRecord
- myEvent%=0:REM 'what' is first variable
- message&=0
- when&=0
- where=0:REM y coordinate of point is first
- wherex=0
- modifiers=0
- applemark=&H14
- whichwindow&=0
- charCodeMask&=VAL("&H000000FF")
- keyCodeMask&= VAL("&H0000FF00")
- myWindow&=FN GETNEWWINDOW(29414,0,-1)
- CALL SETPORT(myWindow&)
- TEXT 2,12,0,0
- CLS
- GOSUB "SetUpMenus"
- FLUSHEVENTS
- "EventLoop": REM Main Event Loop
- DO
- CALL SYSTEMTASK
- LONG IF FN GETNEXTEVENT(everyevent,myEvent%)
- SELECT myEvent%
- CASE 0 :REM No Event
- CASE 1 :REM mousedown
- wResult=FN FINDWINDOW(where,whichwindow&)
- SELECT wResult
- CASE 0 :REM inDesk (do nothing)
- CASE 1 :REM inMenuBar
- mResult&=FN MENUSELECT(where)
- theMenu=FN HIWORD(mResult&)
- theItem=FN LOWORD(mResult&)
- SELECT theMenu
- CASE 255
- GOSUB "appleID"
- CASE 134
- GOSUB "fileID"
- CASE 2
- GOSUB "editID"
- CASE 136
- GOSUB "StyleID"
- CASE 137
- GOSUB "FontID"
- END SELECT
- CALL HILITEMENU(0)
- CASE 2 :REM inSysWindow
- CALL SYSTEMCLICK(myEvent%,whichwindow&)
- CASE 3 :REM inContent
- CASE 4 :REM inDrag
- CALL DRAGWINDOW(myWindow&,where,dragRect%(0))
- CASE 5 :REM inGrow
- CASE 6 :REM inGoAway
- Byte=FN TRACKGOAWAY(myWindow&,where)
- IF Byte THEN PRINT" CLOSEWINDOW(myWindow&)"
- END SELECT
- CASE 2 :REM mouseup
- CASE 3 :REM keydown
- PRINT"key-down"
- charCode&=FN BITAND(message&,charCodeMask&)
- keyCode&=FN BITAND(message&,keyCodeMask&)
- keyCode&=FN BITSHIFT(keyCode&,-8)
- PRINT "Charcode=";charCode&
- PRINT "Keycode=";keyCode&
- CASE 4 :REM keyup
- CASE 5 :REM autokey
- CASE 6 :REM updateEvt
- CASE 7 :REM diskEvt
- CASE 8 :REM activateEvt
- CASE 10 :REM networkEvt
- CASE 11 :REM driverEvt
- CASE 12 :REM app1Evt
- CASE 13 :REM app2Evt
- CASE 14 :REM app3Evt
- CASE 15 :REM app4Evt
- CASE ELSE
- END SELECT
- END IF
- UNTIL theEnd
-
- "SetUpMenus"
- APPLE MENU "About Sample…"
- AboutHandle&=FN GETMHANDLE(255)
- FileHandle&=FN GETMENU(134)
- CALL INSERTMENU(FileHandle&,0)
- EDIT MENU 2
- EditHandle&=FN GETMHANDLE(130)
- FormatHandle&=FN GETMENU(135):'Get Format Menu Handle
- StyleHandle&=FN GETMENU(136):'Get Style Menu Handle
- FontHandle&=FN GETMENU(137):'Get Font Menu Handle
- CALL INSERTMENU(FormatHandle&,0)
- CALL INSERTMENU(StyleHandle&,-1):'Style Menu
- CALL INSERTMENU(FontHandle&,-1):'Font Menu
- CALL ADDRESMENU(FontHandle&,CVI("FONT"))
- '
- ' Check default font in Font menu
- fontcnt%=FN COUNTMITEMS(FontHandle&)
- defaultfont$="Geneva"
- FOR i=1 TO fontcnt%
- CALL GETITEM(FontHandle&,i,item$)
- IF item$=defaultfont$ THEN Oldmitem=i:i=fontcnt%+1
- NEXT i
- CALL CHECKITEM(FontHandle&,Oldmitem,True)
- TextStyle=0
- Plain=0
- Bold=1
- Italic=2
- Underline=4
- Outline=8
- Shadow=16
- Condense=32
- Extend=64
- just=0
-
- CALL DRAWMENUBAR
- RETURN
-
- "appleID"
- CALL GETITEM(AboutHandle&,theItem,Var$)
- PRINT Var$
- mrefNum=FN OPENDESKACC(Var$)
- CALL SETPORT(myWindow&)
- RETURN
- "fileID"
- END
- RETURN
- "editID"
- IF NOT FN SYSTEMEDIT(theItem-1) THEN RETURN
- SELECT theItem
- CASE 1:REM undo command
- CASE 3:REM cut command
- CASE 4:REM copy command
- CASE 5:REM paste command
- CASE 6:REM clear command
- END SELECT
- RETURN
- "StyleID"
- CALL GETITEM(StyleHandle&,theItem,Var$)
- CLS:PRINT Var$;" selected"
- RETURN
-
- "FontID"
- CALL GETITEM(FontHandle&,theItem,Var$)
- CLS:PRINT Var$;" selected"
- RETURN
-